/* 
定义带getter和setter的属性
功能类似于defineProperty
*/

class RefImpl {
  constructor (value) {
    this._value = value
  }

  get value () {
    console.log('监视到value读取')
    return this._value
  }

  set value (val) {
    console.log('监视到value的更新')
    this._value = val
  }
}

const refImpl = new RefImpl(2)
console.log(refImpl.value)
refImpl.value = 3
console.log(refImpl.value)

function ref(value) {
  return new RefImpl(value)
}

const msg = ref('abc')
console.log(msg)
